//
//  DualMediationSDK.h
//  DualMediationSDK
//
//  双聚合广告SDK - 主入口头文件
//  基于现有IMUtils基础设施构建的生产级广告聚合解决方案
//

#import <Foundation/Foundation.h>

//! Project version number for DualMediationSDK.
FOUNDATION_EXPORT double DualMediationSDKVersionNumber;

//! Project version string for DualMediationSDK.
FOUNDATION_EXPORT const unsigned char DualMediationSDKVersionString[];

#pragma mark - 🔧 基础工具模块 (基于现有IMUtils)

// 导入现有的Utils管理器
#import "Utils/IMUtilsManager.h"
#import "Utils/Logger/IMLogUtils.h"
#import "Utils/Network/IMNetworkUtils.h"
#import "Utils/JSON/IMJSONUtils.h"
#import "Utils/Device/IMDeviceUtils.h"
#import "Utils/Encryption/IMEncryptUtils.h"

#pragma mark - 🌐 API服务模块

// API管理器和配置
#import "API/Base/IMAPIManager.h"
#import "API/Base/IMAPIConfig.h"
#import "API/IMAPIManager+Login.h"

// 登录服务
#import "API/Services/IMLoginService.h"
#import "API/Models/IMLoginRequest.h"
#import "API/Models/IMLoginResponse.h"

// API使用示例
#import "API/Examples/IMLoginUsageExample.h"

#pragma mark - 📱 双聚合核心模块

// 核心管理器 - 基于IMUtils构建
#import "Core/DMAdManager.h"
#import "Core/DMConfigManager.h"
#import "Core/DMComplianceManager.h"
#import "Core/DMLifecycleManager.h"

// 广告类型管理器
#import "Core/DMRewardedVideoManager.h"
#import "Core/DMInterstitialManager.h"
#import "Core/DMBannerManager.h"
#import "Core/DMNativeAdManager.h"

// 简化的广告委托协议
#import "Core/DMAdSimpleDelegate.h"

// 数据分析系统
#import "Analytics/DMAnalytics.h"

#pragma mark - 🔌 适配器系统

// 统一适配器协议
#import "Adapters/DMAdapterProtocol.h"

// IronSource适配器
#import "AD/IronSource/DMIronSourceAdapter.h"

#pragma mark - 📊 数据模型

// 用户同意模型
#import "Models/DMUserConsent.h"

#pragma mark - 📚 示例和文档

// 使用示例
#import "Examples/DMUsageExample.h"
#import "Examples/DMAdManagersUsageExample.h"

#pragma mark - 🏗️ SDK架构设计

/*
 
 ┌─────────────────────────────────────────────────────────────────┐
 │                    DualMediationSDK 架构图                      │
 └─────────────────────────────────────────────────────────────────┘
 
 ┌─────────────────────────────────────────────────────────────────┐
 │  📱 应用层 (App Layer)                                         │
 │  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐ │
 │  │  ViewController │  │     测试工具     │  │    示例代码     │ │
 │  │   (你的应用)     │  │ RealTimeLogWindow│  │ DMUsageExample  │ │
 │  └─────────────────┘  └─────────────────┘  └─────────────────┘ │
 └─────────────────────────────────────────────────────────────────┘
                                     │
                                     ▼
 ┌─────────────────────────────────────────────────────────────────┐
 │  🌐 API服务层 (API Layer)                                     │
 │  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐ │
 │  │  IMAPIManager   │  │ IMLoginService  │  │ IMLoginRequest/ │ │
 │  │    (API入口)     │  │   (登录服务)    │  │   Response      │ │
 │  └─────────────────┘  └─────────────────┘  └─────────────────┘ │
 └─────────────────────────────────────────────────────────────────┘
                                     │
                                     ▼
 ┌─────────────────────────────────────────────────────────────────┐
 │  📱 广告聚合层 (Mediation Layer)                              │
 │  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐ │
 │  │   DMAdManager   │  │ DMConfigManager │  │DMComplianceManager│ │
 │  │  (广告管理器)    │  │   (配置管理)    │  │   (合规管理)    │ │
 │  └─────────────────┘  └─────────────────┘  └─────────────────┘ │
 │  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐ │
 │  │   DMAnalytics   │  │   DMUserConsent │  │  DMAdapterProxy │ │
 │  │   (数据分析)     │  │   (用户同意)    │  │   (适配器代理)  │ │
 │  └─────────────────┘  └─────────────────┘  └─────────────────┘ │
 └─────────────────────────────────────────────────────────────────┘
                                     │
                                     ▼
 ┌─────────────────────────────────────────────────────────────────┐
 │  🔧 基础工具层 (Utils Layer) - 基于现有IMUtils               │
 │  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐ │
 │  │ IMUtilsManager  │  │   IMLogUtils    │  │ IMNetworkUtils  │ │
 │  │  (工具管理器)    │  │   (日志工具)    │  │   (网络工具)    │ │
 │  └─────────────────┘  └─────────────────┘  └─────────────────┘ │
 │  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐ │
 │  │ IMDeviceUtils   │  │ IMEncryptUtils  │  │  IMJSONUtils    │ │
 │  │  (设备工具)      │  │   (加密工具)    │  │  (JSON工具)     │ │
 │  └─────────────────┘  └─────────────────┘  └─────────────────┘ │
 └─────────────────────────────────────────────────────────────────┘
                                     │
                                     ▼
 ┌─────────────────────────────────────────────────────────────────┐
 │  🔌 第三方SDK层 (Third-party SDKs)                            │
 │  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐ │
 │  │   AppLovin MAX  │  │   IronSource    │  │      其他       │ │
 │  │   (聚合平台1)    │  │   (聚合平台2)   │  │   (未来扩展)    │ │
 │  └─────────────────┘  └─────────────────┘  └─────────────────┘ │
 └─────────────────────────────────────────────────────────────────┘
 
 📋 特点说明：
 
 ✅ **统一基础设施**: 完全基于现有IMUtils系统构建，避免重复
 ✅ **模块化设计**: 清晰分层，各司其职，便于维护和扩展
 ✅ **API服务完整**: 包含登录、配置等完整API服务
 ✅ **双聚合策略**: 智能的主副平台切换机制
 ✅ **合规管理**: 内置GDPR、CCPA、ATT等合规检查
 ✅ **性能优化**: 异步处理、缓存机制、智能重试
 ✅ **开发友好**: 丰富的日志、调试工具、使用示例
 ✅ **生产就绪**: 完整的错误处理、异常保护、监控体系
 
 */

NS_ASSUME_NONNULL_BEGIN

#pragma mark - 🚀 快速开始

/**
 * DualMediationSDK 快速开始指南
 * 
 * 1. 初始化SDK:
 *    ```objc
 *    [IMUtilsManager initializeUtils];
 *    ```
 * 
 * 2. 配置API服务:
 *    ```objc
 *    [[IMAPIManager sharedManager] configureWithBaseURL:@"https://api.example.com" 
 *                                                  appID:@"your_app_id"];
 *    ```
 * 
 * 3. 登录服务:
 *    ```objc
 *    [[IMAPIManager sharedManager] quickLoginWithSuccess:^(IMLoginResponse *response) {
 *        // 登录成功
 *    } failure:^(NSError *error, NSInteger retryCount) {
 *        // 登录失败
 *    }];
 *    ```
 * 
 * 4. 初始化广告系统:
 *    ```objc
 *    DMSDKConfiguration *config = [[DMSDKConfiguration alloc] init];
 *    config.appId = @"your_app_id";
 *    config.enabledPlatforms = @[@"AppLovin", @"IronSource"];
 *    
 *    [[DMAdManager sharedInstance] initializeSDKWithConfiguration:config 
 *                                                      completion:^(BOOL success, NSError *error) {
 *        // SDK初始化完成
 *    }];
 *    ```
 * 
 * 更多详细使用方法请参考使用示例和文档。
 */

NS_ASSUME_NONNULL_END